import java.util.*;
/*有一个正整数数组 arr，现给你一个对应的查询数组 queries，其中 queries[i] = [Li, Ri]。
对于每个查询 i，请你计算从 Li 到 Ri 的 XOR 值（即 arr[Li] xor arr[Li+1] xor ... xor arr[Ri]）作为本次查询的结果。
并返回一个包含给定查询 queries 所有结果的数组。
示例 1：
输入：arr = [1,3,4,8], queries = [[0,1],[1,2],[0,3],[3,3]]
输出：[2,7,14,8] */
public class Main {
    public static int[] seek(int[] arr, int[][] que) {
        int n = arr.length;
        int m = que.length;
        int[] re = new int[n + 1];
        int[] r = new int[m];
        for (int i = 0; i < n; i++) {
            re[i + 1] = re[i] ^ arr[i];
        }
        for (int j = 0; j < m; j++) {
            int x = que[j][0];
            int t = que[j][1];
            r[j] = re[t + 1] ^ re[x];
        }
        return r;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        int m = sc.nextInt();
        int[][] que = new int[m][2];
        for (int j = 0; j < m; j++) {
            que[j][0] = sc.nextInt();
            que[j][1] = sc.nextInt();
        }
        int[] res = seek(arr, que);
        System.out.println(Arrays.toString(res));
    }
}